#ifndef GAMEROOM_H
#define GAMEROOM_H

#include <QWidget>
#include <QSound>

// 枚举蛇的移动方向
enum class snakeDirect{
    UP = 0,
    DOWN,
    LEFT,
    RIGHT
};

class GameRoom : public QWidget
{
    Q_OBJECT
public:
    explicit GameRoom(QWidget *parent = nullptr);

    // 重写绘图事件，实现贪吃蛇游戏游戏背景效果
    void paintEvent(QPaintEvent *event);

    void startGame();

    void setTimeout(int count) {moveTimeout = count;}

    void createNewFood();// 生成食物

    void moveUp();// 蛇向上移动
    void moveDown();// 蛇向下移动
    void moveLeft();// 蛇向左移动
    void moveRight();// 蛇向右移动

    bool checkFail();// 判断游戏是否结束

private:
    snakeDirect moveDirect = snakeDirect::UP;// 定义蛇的移动方向，默认朝上
    bool isGameStart = false;// 表示是否开始游戏
    QTimer* timer;// 定时器


    QList<QRectF> snakeList;// 表示贪吃蛇链表
    QRectF foodRect;// 表示食物节点

    const int kDefaultTimeout = 200;// 表示贪吃蛇默认移动时间
    const int kSnakeNodeWidth = 20;// 表示蛇身体节点的宽度
    const int kSnakeNodeHeight = 20;// 表示蛇身体节点的高度

    int moveTimeout = kDefaultTimeout;


    QSound* sound;// 音频
};

#endif // GAMEROOM_H
